import request from "@/utils/request";

// ==================== 帖子管理 ====================

/**
 * 获取所有帖子（管理员）
 */
export function getAdminPosts(params: {
  page?: number;
  size?: number;
  keyword?: string;
  categoryId?: number | string;
  status?: number | string;
}) {
  // 如果有搜索条件，使用搜索端点
  if (params.keyword || params.categoryId) {
    return request({
      url: "/admin/posts/search",
      method: "get",
      params: {
        ...params,
        keyword: params.keyword || "",
        categoryId: params.categoryId || undefined,
      },
    });
  }

  // 否则使用普通获取端点
  return request({
    url: "/admin/posts",
    method: "get",
    params,
  });
}

/**
 * 删除帖子（管理员）
 */
export function deleteAdminPost(postId: number) {
  return request({
    url: `/admin/posts/${postId}`,
    method: "delete",
  });
}

/**
 * 恢复帖子（管理员）
 */
export function restoreAdminPost(postId: number) {
  return request({
    url: `/admin/posts/${postId}/restore`,
    method: "put",
  });
}

/**
 * 切换帖子置顶状态（管理员）
 */
export function togglePostTop(postId: number, isTop: boolean) {
  return request({
    url: `/admin/posts/${postId}/top`,
    method: "put",
    params: { isTop },
  });
}

/**
 * 切换帖子状态（管理员）
 */
export function togglePostStatus(postId: number, status: number) {
  return request({
    url: `/admin/posts/${postId}/status`,
    method: "put",
    params: { status },
  });
}

/**
 * 获取系统概览统计
 */
export function getDashboardStats() {
  return request({
    url: "/admin/dashboard",
    method: "get",
  });
}

// ==================== 用户管理 ====================

/**
 * 搜索用户（管理员）
 */
export function searchAdminUsers(params: {
  keyword?: string;
  page?: number;
  size?: number;
  status?: number | string;
}) {
  return request({
    url: "/admin/users",
    method: "get",
    params,
  });
}

/**
 * 获取用户详情（管理员）
 */
export function getAdminUserDetail(userId: number) {
  return request({
    url: `/admin/users/${userId}`,
    method: "get",
  });
}

/**
 * 切换用户状态（管理员）
 */
export function toggleUserStatus(userId: number, status: number) {
  return request({
    url: `/admin/users/${userId}/status`,
    method: "put",
    params: { status },
  });
}

/**
 * 删除用户（管理员）
 */
export function deleteAdminUser(userId: number) {
  return request({
    url: `/admin/users/${userId}`,
    method: "delete",
  });
}

/**
 * 设置用户为管理员（管理员）
 */
export function setUserAsAdmin(userId: number) {
  return request({
    url: `/admin/users/${userId}/admin`,
    method: "post",
  });
}

/**
 * 移除用户管理员权限（管理员）
 */
export function removeUserAdmin(userId: number) {
  return request({
    url: `/admin/users/${userId}/admin`,
    method: "delete",
  });
}

/**
 * 获取帖子统计数据（管理员）
 */
export function getAdminPostStats() {
  return request({
    url: "/admin/stats/posts",
    method: "get",
  });
}

/**
 * 获取用户统计数据（管理员）
 */
export function getAdminUserStats() {
  return request({
    url: "/admin/stats/users",
    method: "get",
  });
}

/**
 * 获取系统概览统计（管理员）
 */
export function getAdminOverviewStats() {
  return request({
    url: "/admin/stats/overview",
    method: "get",
  });
}

/**
 * 获取举报统计数据（管理员）
 */
export function getAdminReportStats() {
  return request({
    url: "/admin/stats/reports",
    method: "get",
  });
}

// ==================== 分类管理 ====================

/**
 * 获取所有分类（管理员）
 */
export function getAdminCategories() {
  return request({
    url: "/admin/categories",
    method: "get",
  });
}

/**
 * 创建分类（管理员）
 */
export function createAdminCategory(data: {
  name: string;
  description?: string;
  parentId?: number;
  sortOrder?: number;
}) {
  return request({
    url: "/admin/categories",
    method: "post",
    params: data,
  });
}

/**
 * 更新分类（管理员）
 */
export function updateAdminCategory(
  categoryId: number,
  data: {
    name?: string;
    description?: string;
    sortOrder?: number;
    status?: number;
  }
) {
  return request({
    url: `/admin/categories/${categoryId}`,
    method: "put",
    params: data,
  });
}

/**
 * 删除分类（管理员）
 */
export function deleteAdminCategory(categoryId: number) {
  return request({
    url: `/admin/categories/${categoryId}`,
    method: "delete",
  });
}

// ==================== 举报管理 ====================

/**
 * 获取所有举报
 */
export function getReports(params: {
  page?: number;
  size?: number;
  status?: string;
  type?: string;
}) {
  return request({
    url: "/admin/reports",
    method: "get",
    params,
  });
}

/**
 * 处理举报
 */
export function handleReport(
  reportId: number,
  data: {
    status: string;
    adminNote?: string;
  }
) {
  return request({
    url: `/admin/reports/${reportId}/handle`,
    method: "put",
    data,
  });
}

/**
 * 批量处理举报
 */
export function batchHandleReports(
  reportIds: number[],
  data: {
    status: string;
    adminNote?: string;
  }
) {
  return request({
    url: "/admin/reports/batch",
    method: "put",
    data: {
      reportIds,
      ...data,
    },
  });
}
